package com.bestcem.xm.ticket.service;

import com.bestcem.xm.common.core.domain.web.ServiceResult;
import com.bestcem.xm.ticket.controller.param.PageParam;
import com.bestcem.xm.ticket.controller.param.ticket.template.TemplateParam;
import com.bestcem.xm.ticket.controller.param.ticket.template.UpdateTemplateParam;
import com.bestcem.xm.ticket.controller.vo.template.GetRecentTemplateVO;
import com.bestcem.xm.ticket.controller.vo.ticket.template.GetTemplateInfoVO;
import com.bestcem.xm.ticket.controller.vo.ticket.template.GetTemplateVO;
import com.bestcem.xm.ticket.controller.vo.ticket.template.ParseCascadeExcelVO;
import com.bestcem.xm.ticket.entity.mongo.TicketTemplateV2;

import java.util.List;

/**
 * 模板的服务类
 *
 * @author xuan.yang <xuan.yang@idiaoyan.com>
 * @version v2.3
 * @date 2021/9/2 14:53
 */
public interface TemplateService {

    /**
     * 模板分页
     *
     * @param type      模板类型
     * @param pageParam 分页信息
     * @param orgId     公司id
     * @return 模板集合
     * @author ympan <yuming.pan@idiaoyan.com>
     * @date 16:06 2021/9/2
     */
    ServiceResult<GetTemplateVO> listTemplate(Integer type, PageParam pageParam, String orgId, boolean listAllFlag);

    /**
     * 插入工单模板
     *
     * @param templateParam
     * @param orgId
     * @return
     */
    ServiceResult<String> insertTemplate(TemplateParam templateParam, String orgId, String userId);

    /**
     * 根据模板id获取详情
     *
     * @param templateId
     * @return
     */
    ServiceResult<GetTemplateInfoVO> getTemplateById(String templateId);


    /**
     * 根据id删除模板
     *
     * @param id
     * @return
     */
    ServiceResult<TicketTemplateV2> deleteTemplateById(String id, String orgId);

    /**
     * @param id                  模板主键
     * @param updateTemplateParam 修改模板所需参数
     * @param orgId               公司id
     * @param userId              用户id
     * @return 修改成功与否信息
     * @author ympan <yuming.pan@idiaoyan.com>
     * @date 18:03 2021/9/3
     */
    ServiceResult<String> updateTemplate(String id, UpdateTemplateParam updateTemplateParam, String orgId, String userId);

    /**
     * 解析级联“选项”和“选项提示”
     *
     * @param optionHint “选项提示”行数据
     * @param rows       级联“选项”行数据
     * @return ParseCascadeExcelVO集合
     * @author ympan <yuming.pan@idiaoyan.com>
     * @date 15:37 2021/9/6
     */
    ServiceResult<ParseCascadeExcelVO> parseCascadeExcel(List<List<Object>> optionHint, List<List<Object>> rows);

    /**
     * 根据orgId和userId获取最近使用的模板
     *
     * @param orgId
     * @param userId
     * @return
     */
    ServiceResult<GetRecentTemplateVO> getRecentUseTemplate(String orgId, String userId);

    /**
     * 创建工单的详情模板和处理模板
     *
     * @param orgId 组织id
     * @author jy.zhao
     * @date 2021/9/7 11:02
     **/
    void createTicketDefaultTemplate(String orgId);
}
